草庐IT

c++ - 指针 vector

全部标签

go - 是否可以捕获此 nil 指针错误

我有一个编译器无法发现的“nilpointer”错误,但我想看看是否有办法通过静态分析找到它。所以bug是这样的:packagemainimport("fmt")typeAstruct{namestring}funcnewGoodA()(*A,error){return&A{name:"Go",},nil}funcnewBadA()(*A,error){returnnil,fmt.Errorf("failedtocreateA")}func(a*A)greet()string{return"Hello"+a.name}funcmain(){valueA,err:=newBadA()if

pointers - 类型将接口(interface)指针转换为接口(interface)指针

这个问题在这里已经有了答案:Whycan'tIgettheaddressofatypeconversioninGo?(1个回答)2年前关闭。我正在尝试将接口(interface)指针(*B)转换为其他接口(interface)指针(*A)。A是B的“父”所以B具有A的所有功能有。我在谷歌搜索并找到了“类型断言”,但在这种情况下我不能这样做。我试过了:f(b.(A))f(b.(*A))f((*b).(A))f(&(*b).(A))但唯一有效的是:tmp:=(*b).(A)f(&tmp)然而它复制b它没有优化。typeAinterface{foo()}typeBinterface{Abar

map - 在 Go 中清除具有指针值的映射

我有一个map[string]*list.List并且每个列表节点也是一个指针。通过简单地将map清除为nil,所有map和列表以及所有这些指针是否都会被清除并收集垃圾并准备好再次使用?typeUnrolledGroupstruct{nextints[]uint32}vardictionary=struct{mmap[string]*list.Listkeys[]string}{m:make(map[string]*list.List)}l:=list.New()newGroup:=UnrolledGroup{next:1,s:make([]uint32,groupLen)}newGr

go - 设置指针的值不能通过接口(interface){}

下面是来自go反射法则的稍微修改的示例http://blog.golang.org/laws-of-reflection.第二个代码部分使用了来自map[string]interface{}的指针,但它不起作用,我做错了什么?谢谢//http://play.golang.org/p/LuMBUWLVT6packagemainimport("fmt""reflect")typeTstruct{xfloat64}func(xT)RowMap()map[string]interface{}{returnmap[string]interface{}{"x":&x.x,}}funcmain(){

c - 如何将 Go 绑定(bind)建模为使用 union 的 C 结构?

我目前正在写一个Gowrapper对于libfreefare.libfreefare的API包含以下功能:structmifare_desfire_file_settings{uint8_tfile_type;uint8_tcommunication_settings;uint16_taccess_rights;union{struct{uint32_tfile_size;}standard_file;struct{int32_tlower_limit;int32_tupper_limit;int32_tlimited_credit_value;uint8_tlimited_credi

go - 通过来自 channel 值的指针分配给局部变量

代码在这里:http://play.golang.org/p/WjpgN_0AaP在第45、46和47行,有三种不同的方法可以从消息代理中提取值(value)。//varmbMessageBroker=*所有这三个都具有完全相同的结果。选择一种方式而不是另一种方式有什么意义?另外,我很困惑为什么星号看起来没有什么区别。 最佳答案 查看函数声明:func(c*MyGui)Receive(in我们可以看到会给你一个*MessageBroker类型的值,指向MessageBroker的指针结构。在指针值之前放置一个星号将取消引用它(参见G

go - 如何在结构初始化器中使用指针类型?

当它是其中一种数字类型的引用类型别名时,我不知道如何初始化结构字段:packagemainimport("fmt""encoding/json")typeNint64*int64typeMyStructstruct{ValueNint64}funcmain(){data,_:=json.Marshal(&MyStruct{Value:??10??})fmt.Println(string(data))} 最佳答案 你不能,你将不得不添加一个额外的步骤playground:funcNewMyStruct(iint64)*MyStruct

go - 使用反射设置指向字段的指针

我有以下结构,并且需要一些字段可以为空,所以我使用指针,主要是为了处理sql空值typeChickenstruct{Idint//NotnullableName*string//canbenullAvgMonthlyEggs*float32//canbenullBirthDate*time.Time//canbenull}所以当我执行以下操作时,我可以看到json结果可以包含值类型的空值,这正是我想要的stringValue:="xx"chicken:=&Chicken{1,&stringValue,nil,nil}chickenJson,_:=json.Marshal(&chicke

go - 对指针和值参数新主义感到困惑

我正在用Go编写一个Web应用程序并使用Neo4j数据库来存储数据。作为Go的Neo4jAPI,我选择neoism.但是,请看下面的代码片段。db,_:=neoism.Connect("http://localhost:7474/db/data")//CreateanodewithaCypherquer//Issueaquery//res1:=[]struct{Astring`json:"n.email"`}{}cq1:=neoism.CypherQuery{//Usebackticksforlongstatements-CypheriswhitespaceindifferentSta

go - "cast"Go中的指针类型如何匹配指向值的类型?

我有一个包含不同变量类型的slice。一些字符串、整数等。我有什么办法可以将指向这些值之一的指针从*interface{}转换为*string或*int32在适当的地方。这是一个演示问题的玩具程序:http://play.golang.org/p/J3zgrYyXPq//StoreastringintheslicevalSlice:=make([]interface{},1)varstrValstring="test"valSlice[0]=strVal//CreateapointertothatstringptrToStr:=&valSlice[0]//Outputs"stringv